﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using VemTransporte.Models.Fachada;
using VemTransporte.Models.Basica;
using VemTransporte.Models.Factory;
using System.Collections;
using System.Data;

namespace VemTransporte.Views.UsuarioEmpresa
{
    public partial class Cadastro : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {                
                DropDownListTipoTel.DataSource = Fachada.Instance.ProcurarTipoTelefoneTodos();
                DropDownListTipoTel.DataBind();
                DropDownListTipoTel.Items.Insert(0, "<-- Selecione -->");
                Fachada.Instance.EmpresaAtual = PessoaFactory.Instance.CreateEmpresa();
            }
        }

        protected void ButtonBuscaCEP_Click(object sender, EventArgs e)
        {
            Endereco end = Fachada.Instance.ProcurarEnderecoPorCep(TextBoxCep.Text + TextBoxCEPComplemento.Text);

            TextBoxEndereco.Text = end.Logradouro;
            TextBoxBairro.Text = end.Bairro.Nome;
            TextBoxCidade.Text = end.Bairro.Cidade.Nome;
            TextBoxEstado.Text = end.Bairro.Cidade.Estado;

        }

        protected void CadastrarButton_Click(object sender, EventArgs e)
        {
            Empresa emp = Fachada.Instance.EmpresaAtual;

            emp.NomeFantasia = TextBoxNomeFantasia.Text;
            emp.NomeRazaoSocial = TextBoxRazaoSocial.Text;
            emp.InscricaoEstadual = TextBoxInscricaoEst.Text;
            emp.Cnpj = TextBoxCNPJ.Text;
            emp.Email = TextBoxEMail.Text;

            //Não é obrigatório o usuário cadastrar um endereço
            if ((TextBoxCep.Text.Length == 5) && (TextBoxCEPComplemento.Text.Length == 3))
            {
                Endereco end = Fachada.Instance.ProcurarEnderecoPorCep(TextBoxCep.Text + TextBoxCEPComplemento.Text);
                if (end != null)
                {
                    //emp.IdEndereco = end.Id;
                    end.Empresas.Add(emp);

                    //emp.Endereco = end;
                }
            }

            Fachada.Instance.Salvar(emp);

            if ((FileUpload1.HasFile) && (FileUpload1.FileContent.Length > 0))
            {
                FileUpload1.SaveAs("~/Content/Imagens/LogoTipos/" + emp.Id.ToString());
            }

        }

        protected void ButtonAddTel_Click(object sender, EventArgs e)
        {
            if (DropDownListTipoTel.SelectedIndex == 0)
            {
                ErrorMessageTelefone.Text = "Selecione a descrição do telefone!";
            }
            else
            {
                ErrorMessageTelefone.Text = "";

                EmpresaTelefone _telefoneEmp = null;

                Empresa _empAtual = Fachada.Instance.EmpresaAtual;

                List<TipoTelefone> _TipoTelefones = Fachada.Instance.ProcurarTipoTelefoneTodos();

                _telefoneEmp = (EmpresaTelefone)Session["_telefoneAlterar"];

                if (_telefoneEmp != null)
                {
                    Session["_telefoneAlterar"] = null;

                    if (_empAtual.EmpresaTelefones.IndexOf(_telefoneEmp) >= 0)
                    {
                        //Telefone encontrado na lista, alterando
                        _telefoneEmp.Numero = TextBoxTelefone.Text;
                        foreach (TipoTelefone item in _TipoTelefones)
                        {
                            if (item.Id == int.Parse(DropDownListTipoTel.SelectedItem.Value))
                            {
                                _telefoneEmp.IdTipoTelefone = item.Id;
                                break;
                            }
                        }

                    }
                }


                if (_telefoneEmp == null)
                {
                    //Adiciona novo telefone
                    _telefoneEmp = new EmpresaTelefone();
                    _telefoneEmp.Numero = TextBoxTelefone.Text;
                    foreach (TipoTelefone item in _TipoTelefones)
                    {
                        if (item.Id == int.Parse(DropDownListTipoTel.SelectedItem.Value))
                        {
                            item.EmpresaTelefones.Add(_telefoneEmp);
                            //_telefoneEmp.IdTipoTelefone = item.Id;
                            break;
                        }
                    }
                    //_telefoneEmp.Empresa = _empAtual;
                    _empAtual.EmpresaTelefones.Add(_telefoneEmp);
                    
                }

                GridViewTelefone.DataSource = _empAtual.EmpresaTelefones;/**/
                GridViewTelefone.DataBind();

                TextBoxTelefone.Text = null;
            }
        }

        protected void GridViewTelefone_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void GridViewTelefone_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            Empresa _empAtual = Fachada.Instance.EmpresaAtual;

            if (_empAtual.EmpresaTelefones.Count > 0)
            {
                _empAtual.EmpresaTelefones.RemoveAt(e.RowIndex);
            }

            GridViewTelefone.DataSource = _empAtual.EmpresaTelefones;/**/
            GridViewTelefone.DataBind();

            e.Cancel = true;
        }

        protected void GridViewTelefone_RowEditing(object sender, GridViewEditEventArgs e)
        {
            Empresa _empAtual = Fachada.Instance.EmpresaAtual;

            try
            {

                if (_empAtual.EmpresaTelefones.Count > 0)
                {
                    EmpresaTelefone telefoneAlterar = _empAtual.EmpresaTelefones[e.NewEditIndex];
                    TextBoxTelefone.Text = telefoneAlterar.Numero;

                    DropDownListTipoTel.ClearSelection();

                    foreach (ListItem item in DropDownListTipoTel.Items)
                    {
                        if (item.Value == Convert.ToString(telefoneAlterar.TipoTelefone.Id))
                        {
                            item.Selected = true;
                            break;
                        }
                        
                    }
                    TextBoxTelefone.Focus();

                    Session["_telefoneAlterar"] = telefoneAlterar;
                }

                GridViewTelefone.DataSource = _empAtual.EmpresaTelefones;/**/
                GridViewTelefone.DataBind();

            }
            finally
            {
                e.Cancel = true;
            }
        }
    }
}